import time

import pandas as pd

import PD.PdUtil
import 去除企宽
import 排序分公司
from 小区健康度.Batch import batch


def handler(df, batch):
    # 根据账号，掉线时间去重
    df = df.drop_duplicates(subset=['account', 'offline_time'])
    # 按分公司分组，统计每个分公司的账号个数
    grouped = df.groupby('分公司')['account'].agg(['count', 'nunique']).reset_index()
    grouped.columns = ['分公司', '中断人次', '中断人数']

    # 统计每个分公司中出现次数大于1的账号个数
    duplicate_counts = df[df.duplicated(['分公司', 'account'], keep=False)].groupby('分公司')[
        'account'].nunique().reset_index()
    duplicate_counts.columns = ['分公司', '重复中断用户数']

    # 合并结果
    result = pd.merge(grouped, duplicate_counts, on='分公司', how='left')

    # 填充NaN值为0（如果没有重复账号）
    result['重复中断用户数'] = result['重复中断用户数'].fillna(0).astype(int)
    result['分公司'] = result['分公司'].astype(str).str[:2]
    result.columns = [col if col == '分公司' else batch + col for col in result.columns]
    result = 排序分公司.order(result)
    return result


if __name__ == '__main__':
    df = handler(去除企宽.get_df(batch, ['account', 'offline_time', '分公司']),
                 batch)
    df = pd.read_excel("D:\\家宽\\各分公司中断.xlsx").merge(df, on='分公司')
    column_types = ['中断人次', '中断人数', '重复中断用户数']

    df = PD.PdUtil.新增统计行(df, '全市')
    # 提取每个类型对应的列名
    sorted_columns = ['分公司']
    for col_type in column_types:
        # 筛选出包含当前类型的列名
        cols = [col for col in df.columns if col_type in col]
        sorted_columns.extend(cols)
    # 按照新的列名顺序重新排列数据框
    res = df[sorted_columns]

    res.to_excel("D:\\家宽\\各分公司中断2.xlsx", index=False)
